/////////////////////////////////////////////////////////////////////////////
/// @file errno_exception.h
///
/// exception object in the style of perror
///
/// -------------------------------------------------------------------------
///
/// Copyright (c) 2009-2010 Chris Byrne
/// 
/// This software is provided 'as-is', without any express or implied
/// warranty. In no event will the authors be held liable for any damages
/// arising from the use of this software.
/// 
/// Permission is granted to anyone to use this software for any purpose,
/// including commercial applications, and to alter it and redistribute it
/// freely, subject to the following restrictions:
/// 
/// 1. The origin of this software must not be misrepresented; you must not
/// claim that you wrote the original software. If you use this software
/// in a product, an acknowledgment in the product documentation would be
/// appreciated but is not required.
/// 
/// 2. Altered source versions must be plainly marked as such, and must not
/// be misrepresented as being the original software.
/// 
/// 3. This notice may not be removed or altered from any source
/// distribution.
///
/////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_ERRNO_EXCEPTION
#define INCLUDED_ERRNO_EXCEPTION

//- includes
#include <errno.h>
#include <stdexcept>
#include <string.h>

/////////////////////////////////////////////////////////////////////////////
/// exception object in the style of perror
struct ErrnoException : public std::runtime_error {
	ErrnoException( const std::string& msg, int error_num = errno )
		:	std::runtime_error( msg + ": " + strerror(error_num) )
	{ }
};


#endif // INCLUDED_ERRNO_EXCEPTION
